package com.winner.delegate_patter;

import java.util.Random;
/**
 * 代理角色
 *
 * 优点: 对内隐藏实现, 易于扩展; 简化调用;
 *
 * 委派模式的核心是委派类的实现.
 */
public class TaskDelegate implements Task{
    @Override
    public void doTask() {
        System.out.println("代理执行开始....");

        Task task = null;
        if (new Random().nextBoolean()){  // 下面代码中我们使用随机数来判断应该实例化哪个具体实现类
            task = new ConcreteTaskA();
            task.doTask();
        }else{
            task = new ConcreteTaskB();
            task.doTask();
        }

        System.out.println("代理执行完毕....");
    }
}
